package model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;
import comparators.OrderedProductComparator;
import utilities.OrderStatus;
public class Order implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private int idCustomer;
private TreeSet<OrderedProduct> orderedProducts;
private OrderStatus status;
public Order(int id, int idCustomer) {
orderedProducts = new TreeSet<OrderedProduct>(new OrderedProductComparator());
setId(id);
setIdCustomer(idCustomer);
setStatus(OrderStatus.PENDING);
}
public Order(int id, int idCustomer, TreeSet<OrderedProduct> orderedProducts) {
this(id, idCustomer);
setOrderedProducts(orderedProducts);
setStatus(OrderStatus.PENDING);
}
public void addOrderedProduct(OrderedProduct op) {
this.orderedProducts.add(op);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdCustomer() {
return idCustomer;
}
public void setIdCustomer(int idCustomer) {
this.idCustomer = idCustomer;
}
public OrderStatus getStatus() {
return status;
}
public void setStatus(OrderStatus status) {
this.status = status;
}
public TreeSet<OrderedProduct> getOrderedProducts() {
return this.orderedProducts;
}
public void setOrderedProducts(TreeSet<OrderedProduct> orderedProducts) {
this.orderedProducts = orderedProducts;
}
public double getValue() {
double value = 0;
Iterator<OrderedProduct> itr = this.orderedProducts.iterator();
while (itr.hasNext()) {
OrderedProduct op = itr.next();
value += op.getProduct().getPrice() * op.getOrderedQuantity();
}
return value;
}
public void processOrder() {
Iterator<OrderedProduct> itr = this.orderedProducts.iterator();
while (itr.hasNext()) {
OrderedProduct op = itr.next();
setStatus(OrderStatus.PROCESSING);
if (op.getProduct().getQuantity() < op.getOrderedQuantity()) {
setStatus(OrderStatus.FAILED);
}
}
}
public void printOrder() {
System.out.print(this.getStatus() + " ");
Iterator<OrderedProduct> itr = this.orderedProducts.iterator();
while (itr.hasNext()) {
OrderedProduct op = itr.next();
System.out.println("Order" + op.getProduct().getTitle() + " " + op.getOrderedQuantity() + " ");
}
}
}